//Random Game Engine
//Copyright (C) 2013  Nikolay Dionisov

//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.

//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.



#ifndef __PLATFORM_MANAGER__H_INCLUDED__
#define __PLATFORM_MANAGER__H_INCLUDED__

#include <string>
#include "..\..\SystemInterface.h"
namespace re
{
	namespace core
	{
		//-----------------------------------------------
		//Stores the windows usable by RandomEngine
		//-----------------------------------------------
		class IWindow
		{
		public:
			IWindow() {}
			~IWindow() {}
		};


		//-----------------------------------------------
		//Platform Manager Interface
		//-----------------------------------------------
		class IPlatformManager
		{
		public:
			IPlatformManager() {}
			~IPlatformManager() {}

			virtual IWindow* VCreateWindow(std::wstring& title) = 0;
			virtual void VDestroyWindow(IWindow* window) = 0;
			virtual void VProcessMessages() = 0;
			virtual ISystem* LoadModule(const std::wstring& source) = 0;
			virtual void SetManagerContainer(ManagerContainer* managers) = 0;
		};
	}
}

#endif